<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>typeof的使用(typeof use)</title>
  <!-- 
  在JavaScript中， `typeof` 运算符用于检测变量的数据类型。它返回一个表示变量类型的字符串。

  语法
  typeof operand
  -  `operand` 可以是任何有效的JavaScript表达式。

  返回值
  `typeof` 运算符可以返回以下几种类型的字符串：

  1. "undefined": 
    - 当变量未被赋值时，返回此值。
    let a;
    console.log(typeof a); // "undefined"
  2. "boolean": 
    - 布尔值类型，表示 `true` 或 `false` 。
    let isTrue = true;
    console.log(typeof isTrue); // "boolean"
  3. "number": 
    - 数字类型，包括整数和浮点数。
    let num = 42;
    console.log(typeof num); // "number"
  4. "string": 
    - 字符串类型，用于表示文本。
    let str = "Hello, World!";
    console.log(typeof str); // "string"
  5. "object": 
    - 对象类型，包括数组、对象、日期等。注意： `null` 也会被识别为对象。
    let obj = {};
    console.log(typeof obj); // "object"
    
    let arr = [];
    console.log(typeof arr); // "object"
    
    let n = null;
    console.log(typeof n); // "object" (这是JavaScript的一个历史遗留问题)
  6. "function": 
    - 函数也是一种对象，因此 `typeof` 会返回"function"。
    function myFunction() {}
    console.log(typeof myFunction); // "function"
  7. "symbol": 
    - ES6引入的类型，用于创建唯一的标识符。
    let sym = Symbol();
    console.log(typeof sym); // "symbol"
  8. "bigint": 
    - ES11引入的类型，用于表示大于 `Number.MAX_SAFE_INTEGER` 的整数。
    let bigInt = BigInt(1234567890123456789012345678901234567890);
    console.log(typeof bigInt); // "bigint"
  -  `typeof` 运算符在检查基本数据类型时非常有用，但在检查对象类型时可能会有一些限制。例如，所有数组和对象都会返回"object"。

  注意： 对于 `null` ，由于历史原因， `typeof null` 返回"object"而不是"null"； typeof 用于判断基本数据类型。
   -->
</head>
<body>

  <script>
    console.log(typeof "Hello"); // "string"
    console.log(typeof 123); // "number"
    console.log(typeof true); // "boolean"
    console.log(typeof undefined); // "undefined"
    console.log(typeof { name: "Alice" }); // "object"
    console.log(typeof [1, 2, 3]); // "object"
    console.log(typeof null); // "object"
    console.log(typeof function() {}); // "function"
    console.log(typeof Symbol("id")); // "symbol"
    console.log(typeof BigInt(123)); // "bigint"
  </script>
  
</body>
</html>